#include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<unistd.h>
#include<string.h>
//int main()
//{
//      FILE* fp = fopen("log.txt","a");
//    if(fp == NULL)
//    {
//      perror("fopen");
//
//    }
//
//    fprintf(fp,"hello Linux\n");
//
//    fclose(fp);
//
//    return 0;
//
//}
//

//#define ONE 1
//#define TWO (1 << 1)
//#define THREE (1 << 2)
//#define FOUR (1 << 3)
//  
//void print(int flag)
//{
//    if(flag & ONE) printf("1\n");
//    if(flag & TWO) printf("2\n");
//    if(flag & THREE) printf("3\n");
//    if(flag & FOUR) printf("4\n");
//}
// 
// int main()
// {
//     print(ONE);
//     printf("-----------\n");
//  
//     print(ONE|TWO);
//     printf("-----------\n");
//  
//     print(ONE|TWO|THREE);  //相当于是将两个宏中为1的位，进行了合并
//     printf("-----------\n");
//
//     print(ONE|TWO|THREE|FOUR);                                                      
//     printf("-----------\n");
//  
//    return 0;
// }
//
// int main()
//{
//     umask(0);
//
//    int fd1 = open("data1.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);//以w的方式打开
//
//    int fd2 = open("data2.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);//以w的方式打开
//    int fd3 = open("data3.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);//以w的方式打开
////    if(-1 == fd)
////   {
////      perror("open");
////      return 1;
////    }
////
//       
//       printf("fd1: %d \n fd2: %d \n fd3: %d \n",fd1,fd2,fd3);
//       printf("stdin:%d\n", stdin->_fileno);
//
//       printf("stdout:%d\n", stdout->_fileno);
//       printf("stdin:%d\n", stderr->_fileno);
//    return 0;
//}

int main()
{
  //int fd=open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
  //
  //dup2(fd,1);
  //printf("hello Linux\n");
  //
  //close(fd);
  
  const char * s1="hello write\n";

  write(1,s1,strlen(s1));

  const char * s2="hello fprintf\n";
  fprintf(stdout,"%s",s2);

  const char * s3="hello fwrite\n";
  fwrite(s3 ,strlen(s3),1,stdout);

  fork();

   return 0;
}

